package com.hongyi.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.github.pagehelper.PageInfo;
import com.hongyi.pojo.ResultObject;
import com.hongyi.pojo.TStudent;
import com.hongyi.service.TStudentService;
import com.hongyi.util.Constant;


@RequestMapping("/student")
@RestController //标识为返回类型为Json的控制
public class StudentController {
	@Autowired
	private TStudentService studentService;

	/**
	 * 获取所有信息
	 * @param student
	 * @param limit
	 * @param page
	 * @return
	 */
	  @RequestMapping("/getAllStudent")
	  public ResultObject<List<TStudent>> getUsers(TStudent student, @RequestParam("limit") int limit, @RequestParam("page") int page) {
		  // 使用@RequestMapping注解将HTTP请求映射到这个方法，URL路径为"/getAllStudent"
		  // 这个方法接受一个TStudent对象、名为"limit"和"page"的整数参数

		  // 输出student对象，通常用于调试目的
		  System.out.println(student);

		  // 调用studentService的getAll方法来获取学生信息，带有分页参数
		  PageInfo<TStudent> pageInfo = studentService.getAll(student, page, limit);

		  // 创建一个ResultObject对象，用于封装响应数据
		  ResultObject<List<TStudent>> rs = new ResultObject<List<TStudent>>();

		  // 设置ResultObject对象的状态码、消息、数据和总数
		  rs.setCode(Constant.SUCCESS_RETUEN_CODE);
		  rs.setMsg("查询成功");
		  rs.setData(pageInfo.getList());
		  rs.setCount(pageInfo.getTotal());

		  // 返回ResultObject对象，该对象将被转换为JSON并作为HTTP响应发送给客户端
		  return rs;
	  }

	/**
	 *
	 * @param student
	 * @return
	 */
	@RequestMapping("/addStudent")
    public ResultObject<Object> addStudent(TStudent student) {

    	Integer studentNo=student.getStudentNo(); // 获取学学号
    	student.setStuPass(studentNo.toString()); // 将学号转换成字符串并作为初始密码
    	TStudent result=studentService.selectByNo(studentNo);
    	//统一返回
    	ResultObject<Object> rs=new ResultObject<Object>();
    	if(null==result) {
    		studentService.addStudent(student);
    		rs.setCode(Constant.SUCCESS_RETUEN_CODE);
    		rs.setMsg("增加学生信息成功");
    	}else {
    		rs.setCode(Constant.HASE_RETUEN_CODE);
        	rs.setMsg("学号已存在");
    	}
    	return rs;
    }
	  //标识请求地址
    @RequestMapping("/updateStudent")
    public ResultObject<Object> updateStudent(TStudent student) {
    	Integer total=studentService.updateStudent(student);
    	//统一返回
    	ResultObject<Object> rs=new ResultObject<Object>();
    	if(null==total||0==total) {
    		rs.setCode(Constant.FAILURE_RETUEN_CODE);
    		rs.setMsg("修改学生信息失败");
    	}else {
    		rs.setCode(Constant.SUCCESS_RETUEN_CODE);
    		rs.setMsg("修改学生信息成功");
    	}
    	return rs;
    }
	  //标识请求地址
    @RequestMapping("/deleteStudent")
    public ResultObject<Object> deleteStudent(@RequestParam("studentNo") int studentNo) {
    	Integer total=studentService.deleteStudent(studentNo);
    	//统一返回
    	ResultObject<Object> rs=new ResultObject<Object>();
    	if(null==total||0==total) {
    		rs.setCode(Constant.FAILURE_RETUEN_CODE);
    		rs.setMsg("修改学生信息失败");
    	}else {
    		rs.setCode(Constant.SUCCESS_RETUEN_CODE);
    		rs.setMsg("修改学生信息成功");
    	}
    	return rs;
    }
    
    /**
     * 获取学生下拉框
     * @return
     */
    @RequestMapping("/studentSelect")
    public ResultObject<List<TStudent>> studentSelect() {
    	ResultObject<List<TStudent>> rs=new ResultObject<List<TStudent>>();
    	List<TStudent> list=studentService.selectAllStudent();
    	rs.setCode(Constant.SUCCESS_RETUEN_CODE);
    	rs.setMsg("查询成功");
    	rs.setData(list);
    	int total=list.size();
    	Long a=Long.parseLong(String.valueOf(total));
    	rs.setCount(a);
    	return rs;
    }
    
}
